package 剑指offer;


/**
 * @author: tyy 剑指 Offer
 * 700. 二叉搜索树中的搜索
给定二叉搜索树（BST）的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在，则返回 NULL。
例如，
给定二叉搜索树:
4
/ \
2   7
/ \
1   3
和值: 2
 * @create: 2021-11-20 17:40
 * @description:
 **/
public class Solution33 {

    /**
     * 递归
     */
    public TreeNode searchBST(TreeNode root, int val) {
        if (root == null || root.val == val) return root;
        return root.val > val ? searchBST(root.left, val) : searchBST(root.right, val);
    }

    /**
     * 迭代
     */
    public TreeNode searchBST1(TreeNode root, int val) {
        while (root != null && root.val != val) {
            root = root.val > val ? root.left : root.right;
        }
        return root;
    }
    public static void main(String[] args) {
        Solution33 solution26 = new Solution33();
        TreeNode treeNode1 = new TreeNode(2);
        TreeNode treeNode2 = new TreeNode(7);
        TreeNode treeNode = new TreeNode(4, treeNode1, treeNode2);
        TreeNode count = solution26.searchBST1(treeNode, 4);
        System.out.println("count = " + count);

    }
}
